package middlewares

import "github.com/kataras/iris"

func Before(ctx iris.Context) {
	shareInformation := "this is a sharable information between handlers"

	requestPath := ctx.Path()
	println("Before the mainHandler: " + requestPath)

	ctx.Values().Set("info", shareInformation)
	ctx.Next() // 执行下一个处理器。
}

func After(ctx iris.Context) {
	println("After the mainHandler")
	ctx.Next() // 如果还要往下执行必须要使用ctx.Next()
}

func MainHandler(ctx iris.Context) {
	println("Inside mainHandler")

	// 获取 "before" 处理器中的设置的 "info" 值。
	info := ctx.Values().GetString("info")

	// 响应客户端
	ctx.HTML("<h1>Response</h1>")
	ctx.HTML("<br/> Info: " + info)

	ctx.Next() // execute the "after".
}
